package com.tedu.api.thread;

/**

        *线程----创建 三种
        *第一种：子类 继承Thread 方案---【使用率不多】
        **        ①编写子类 MyThread1 继承 Thread
        *        ②子类：重写run方法【线程运行】
        *        ③实例化 MyThread1 对象 调用start方法【启动线程】
 **第二种：子类 实现Runnable接口 方案--【推荐用法】
        *          ①编写子类MyRunnable1 实现 Runnable 接口
        *          ②子类，强制重写run方法【线程运行】
        *          ③实例化MtRunnable1对象【没有start方法】
        *          ④创建Thread对象，把实例化MyRunnable1 对象通过构造器
        *          ⑤调用Thread start方法
        *线程 继承Thread 内嵌入Runnable接口 重写run方法
        *JavaOOP---缺点：Java支持单继承，子类继承Thread
        *无法拓展：不仅线程，其他集合，继承其他类，只具备线程功能
        *启动线程方法 start（）----线程生命周期
        *缺点：线程创建不明确
        *实现Runnable 真正线程运行---定义run方法，线程运行状态
        *有点：继承还可以实现----拓展性高
        *缺点：线程创建不方便----项目：步骤逻辑清晰
        **第三种：匿名内部类实现线程--->Lambda表达式
 *       JavaOOP：封装--内部类：成员内部类，方法内部类，匿名内部类
 *       匿名内部类创建方式
 *       对象  引用=new  对象（）{}；
 *       匿名内部类---创建一次===子实现类实例化一次Thread/Runnable
 *                  优点：省去创建子类对象名称---接口创建，抽象类创建！
 */
public class TR {
    public static void main(String[] args) {
        //1.类只需要实例化一次：匿名内部类--Thread
        Thread BLG=new Thread(){
            public void run() {
                for (int i=0;i<10;i++){
                    System.out.println("给我学的呀，一愣一愣的");
                }
            }
        };
        BLG.start();
        //2.类只需要实例化一次；匿名内部类---Runnable
        Thread t2=new Thread(new Runnable(){
            public void run() {
            for (int i=0;i<10;i++){
                System.out.println("时间不等人，但我等你");
            }
            }
        });
        t2.start();
    }
}
